Today, computer graphics is used in a wide variety of applications, such as in business, science, animation, simulation, computer-aided design, process control, electronic publication, etc. In an effort to portray a more realistic real-world representation, three dimensional objects are transformed into models having the illusion of depth for display onto a two-dimensional computer screen. This is accomplished by using a number of polygons to represent a three-dimensional object. Complex three-dimensional objects may require upwards of hundreds of polygons in order to form an accurate model. Hence, a three-dimensional object can be readily manipulated (e.g., displayed in a different location, rotated, scaled, etc.) by processing the individual respective polygons corresponding to that object. Next, a scan conversion process is used to determine which pixels of a computer display fall within each of the specified polygons. Thereupon, texture is applied to only those pixels residing within specified polygons. In addition, hidden or obscured surfaces, which are normally not visible, are eliminated from view. Hence, displaying a three dimensional object on a computer system is a rather complicated task and can require a tremendous amount of processing power.
This is especially true for those cases involving dynamic computer graphics for displaying three-dimensional objects that are in motion. In order to simulate smooth motion, the computer system should have a frame rate of at least 30 hertz. In other words, new images should be updated, redrawn and displayed at least thirty times a second. This imposes a heavy processing and computational burden on the computer system. Indeed, even more processing power is required for interactive computer graphics, where displayed images change in response to a user input and where there are multiple objects in a richly detailed scene.
However, each extra object that is added into a scene needs to be modeled, scan converted, textured, Z-buffered for depth, etc., all of which, adds to the amount of processing resources that is required. In addition, it would be highly preferable if lghting, shadowing, shading, and fog could be included as part of the 3-D scene. Generating these special effects, again, consumes valuable processing resources. Hence, a major problem associated with producing realistic three-dimensional scenes is that it requires such a tremendous amount of processing power. The "richer" and more realistic a scene becomes, the more processing power that is required to render that scene. Moreover, speed becomes a major limiting factor as the computer must render millions of pixels in order to produce these amazingly complex scenes in less than one thirtieth (1/30) of a second.
Even though the processing power of computer systems continues to improve, there exists whole markets which demand even greater and greater processing power. Certain purchasers (e.g., drug companies, oil exploration, medical imaging, film studios, etc.) will pay a premium to obtain even faster and more powerful computer for rendering 3-D images.
In the past, there have been attempts to utilize several rendering engines in a single computer system in order to perform parallel processing. Each of these rendering engines is used to render one particular frame of image. While one rendering engine is in the process of generating one frame's worth of image data, another separate rendering engine is simultaneously generating the next frame's worth of image data. Meanwhile, other rendering engines can simultaneously be processing subsequent frames, etc. The digital-to-analog (DAC) outputs of each of these rendering engines are wired together to drive the cathode ray tube (CRT) display screen. By rendering multiple frames's worth of data at the same time with multiple rendering engines, the computer's overall processing speed is increased.
Unfortunately, however, there are some drawbacks to this way of ganging together multiple rendering engines. First, since there are multiple DACs driving the same CRT screen, there tends to be some scintillation between frames as DACs are switched from frame to frame. Furthermore, there are serious synchronization problems in order to properly coordinate the activities amongst all the rendering engines and their respective DACs.
Thus, there exists a need for some apparatus or method which increases the rendering power and speed of a 3-D computer system without sacrificing picture quality or increasing programming complexity in an unacceptable way. The present invention provides a novel solution by having one output controller which requests and receives data from multiple rendering engines. This effectively resolves virtually all problems associated with using multiple rendering engines. Furthermore, with the present invention, multiple rendering engines can now contribute to the generation of one single frame. The end result is that processing power and speed is dramatically improved with minimal or no discernible degradation to the displayed images.